﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
    class GerenciadorTelas
    {
        public enum Estados {FASE1, INSTRUCOES, CREDITOS, MENU, MENUiTENS,GAMEOVER,SAIR}
        public static Estados estadoAtual;

        Menu menu;
        Creditos creditos;
        Fase1 fase1;
        MenuItens menuItens;
        Instrucoes instrucoes;
        GameOver gameOver;

        SpriteFont font;


        public GerenciadorTelas () 
        {
            estadoAtual = Estados.MENU;
        }

        public void Load(ContentManager Content, GameWindow gw)
        {
            menu = new Menu();
            menu.Load(Content);

            creditos = new Creditos();
            creditos.Load(Content);

            fase1 = new Fase1(Content,gw);

            instrucoes = new Instrucoes();
            instrucoes.Load(Content);

            menuItens = new MenuItens(Content);

            gameOver = new GameOver(Content.Load<Texture2D>("gameover"));           

            font = Content.Load<SpriteFont>("arial");
        }

        public void Update(GameTime gameTime, KeyboardState tecladoAtual, KeyboardState tecladoAnterior, GamePadState gamePadAtual, GamePadState gamePadAnterior)
        {   
            switch (estadoAtual)
            {
                case Estados.MENU:
                    menu.Update(gameTime);
                 break;

                case Estados.FASE1:
                 fase1.Update(gameTime, tecladoAtual,tecladoAnterior,gamePadAtual, gamePadAnterior);                
                 break;

                case Estados.MENUiTENS:
                 menuItens.Update(gameTime);
                 break;

                case Estados.INSTRUCOES:
                 instrucoes.Update(gameTime);
                 break;

                case Estados.CREDITOS:
                 creditos.Update(gameTime);
                 break;
                    
                case Estados.GAMEOVER:
                 gameOver.Update(gameTime);
                 break;                  
            }

        }

        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            switch (estadoAtual)
            {
                case Estados.MENU:
                    menu.Draw(spriteBatch);
                   // spriteBatch.DrawString(font, "carregue menu", new Vector2(400,300), Color.White);
                    break;

                case Estados.FASE1: // fase1, depois fazer estados para outras fases
                    fase1.Draw(gameTime, spriteBatch);
                  //  spriteBatch.DrawString(font, "carregue novo jogo", new Vector2(400, 300), Color.White);
                  
                    break;

                case Estados.MENUiTENS:
                    menuItens.Draw(gameTime, spriteBatch);
                    break;

                case Estados.INSTRUCOES:
                    instrucoes.Draw(spriteBatch);
                   // spriteBatch.DrawString(font, "carregue instruções", new Vector2(400, 300), Color.White);
                    break;

                case Estados.CREDITOS:
                    creditos.Draw(spriteBatch);
                   // spriteBatch.DrawString(font, "carregue creditos", new Vector2(400, 300), Color.Red);
                    break;

                case Estados.GAMEOVER:
                    gameOver.Draw(gameTime, spriteBatch);
                    // spriteBatch.DrawString(font, "carregue creditos", new Vector2(400, 300), Color.Red);
                    break;
            }
        }
    }
}
